const generateCompactId = (question: string) => {
    const timePart = Date.now().toString(36).slice(2, 6);; // 4位左右
    const randomPart = Math.random().toString(36).slice(2, 6); // 4位
    const hashPart = [...question]
        .map(c => c.charCodeAt(0).toString(36))
        .join('')
        .slice(0, 8); // 控制 hash 长度最多 4 位
    return timePart + randomPart + hashPart; // 总长 16位左右
};


//相关单词
const getWord = async (text: string) => {
    // 请求的URL
    const url = "https://fanyi.baidu.com/sug"
    // 发送POST请求
    return fetch(url, {
        method: "POST",
        headers: {
            "Content-Type": "application/x-www-form-urlencoded",
        },
        body: new URLSearchParams({ kw: text }).toString(), // 将数据转换为 URL 编码格式
    })
        .then((response) => response.json()) // 解析 JSON 响应
        .then((res) => res.data)
        .catch((error) => [])
}
//翻译
const translate = async (text: string, lang: string) => {
    const url = "http://api.microsofttranslator.com/v2/ajax.svc/TranslateArray2?"

    const params = new URLSearchParams({
        from: '"en"', // 假设源语言是英文
        to: `"${lang}"`, // 目标语言
        texts: `["${text}"]`,
        options: "{}",
        oncomplete: "onComplete_3",
        onerror: "onError_3",
        _: "1430745999189",
        appId: '"3DAEE5B978BA031557E739EE1E2A68CB1FAD5909"',
    })

    try {
        const response = await fetch(`${url}${params.toString()}`, {
            method: "GET",
        })

        if (!response.ok) {
            throw new Error(`HTTP error! 状态码: ${response.status}`)
        }

        const strData = await response.text()
        // console.log(strData)
        if (strData.includes('"TranslatedText":')) {
            const [, data] = strData.split('"TranslatedText":')
            const translatedText = data.slice(1, data.indexOf('"', 1))
            return translatedText
        }
        return null
    } catch (error) {
        // console.error("翻译请求失败:", error)
        return null
    }
}
//出题
async function toPzuuleAi(content: Array<{ id: number, text: string }>) {
    const url = "http://118.31.223.52:22123/v1/chat/completions";
    const headers = {
        "Content-Type": "application/json",
        "Authorization": "Bearer 2UbMF6UnHmaDhEK6dz0biHiHvsu2Rk1TXYNshOoWUpalTKz6tZge8nTD821CXOFH",
    };

    const data = {
        model: "deepseek",
        "conversation_id": "4a15cdc6-36e3-45ab-ab41-f4f1d1f4d6b1@2",
        messages: [
            {
                "role": "system",
                "content": "你是一位英语四六级出题专家，根据提供的文本，生成阅读理解题目。按照以下 JSON 格式输出：\n\n[\n  {\n \"type\": \"single\" | \"multiple\",\n    \"question\": \"问题文本\",\n    \"level\": 1,\n    \"options\": [\n      { \"key\": \"A\", \"value\": \"选项A\" },\n      { \"key\": \"B\", \"value\": \"选项B\" },\n      { \"key\": \"C\", \"value\": \"选项C\" },\n      { \"key\": \"D\", \"value\": \"选项D\" }\n    ],\n    \"answer\": \"正确答案\",\n    \"details\": {\n\"text\":\"答案解析\",\n\"id\":\"对应内容的id\"}\n  }\n]\n\n规则：\n1. 只返回 JSON 数组，格式严格按照上方示例。\n2. `type` 字段值为 `\"single\"`（单选）或 `\"multiple\"`（多选）。\n3. `level` 取值 1-5，表示从易到难的级别。\n4. `answer` 只填正确选项的 `key`，一定要使用数组（如 `[A]或[A,B]`）。\n5. `details的text` 需基于原文解析答案，中文解析一下为什么选这个,解析的用中文，原文的用以为。id使用数组（如 `[1,2]`）\n6. 不要返回任何 JSON 以外的文字。\n\n请根据用户输入文本生成题目"
            },
            {
                role: "user",
                content: JSON.stringify(content),
            },
        ],
        stream: false,
    };

    try {
        const response = await fetch(url, {
            method: "POST",
            headers: headers,
            body: JSON.stringify(data),
        });
        const result = await response.json();
        // console.log(result)
        // 解析返回的 JSON
        if (result.choices && result.choices.length > 0) {
            // console.log("原始返回数据：", result);
            const questionsData = JSON.parse(result.choices[0].message.content.replace(/^```json\n/, "").replace(/```$/, ""));
            return questionsData.map((e: any) => ({
                id: generateCompactId(e.question),
                ...e
            }))

        } else {
            // console.error("API 返回数据异常");
            return []
        }
    } catch (error) {
        console.error("请求失败：", error);
        return []
    }
}
export {
    getWord,
    translate,
    toPzuuleAi
}

